package com.chucang.shucang.ttp.nftcenter.proxy;

import com.chucang.shucang.ttp.nftcenter.model.dto.CreateAccountDTO;
import com.chucang.shucang.ttp.nftcenter.model.dto.DealResultDTO;
import com.chucang.shucang.ttp.nftcenter.model.dto.NFTClassDTO;
import com.chucang.shucang.ttp.nftcenter.model.dto.NFTOperateDTO;
import com.chucang.shucang.ttp.nftcenter.model.req.*;

/**
 * @author enlai.wang 16621134798
 * @date: 2022/5/26
 */
public interface AvataProxy {

    /**
     * 创建离岸账户
     *
     * @param name        账户名称
     * @param operationId 操作id，需幂等
     * @return
     */
    CreateAccountDTO createAccount(String name, String operationId);

    /**
     * 发行NFT
     *
     * @param nftPublishReq
     * @return
     */
    NFTOperateDTO publishNFT(NFTPublishReq nftPublishReq);

    /**
     * 上链交易结果查询
     *
     * @param taskId TASK ID
     * @return
     */
    DealResultDTO queryDealResult(String taskId);

    /**
     * 转让NFT
     *
     * @param nftTransferReq
     * @return
     */
    NFTOperateDTO transferNFT(NFTTransferReq nftTransferReq);

    /**
     * 创建NFT类别
     *
     * @param nftCreateReq
     * @return
     */
    NFTOperateDTO createNFT(NFTCreateReq nftCreateReq);

    /**
     * NFT销毁
     *
     * @param nftDestroyReq
     * @return
     */
    NFTOperateDTO destroyNFT(NFTDestroyReq nftDestroyReq);

    /**
     * NFT类别详情
     *
     * @param classId
     * @return
     */
    NFTClassDTO queryNFTClassDetail(String classId);
}
